"""
商品模块索引定义
用于优化数据库查询性能
"""

from sqlalchemy import Index


# Product表索引
product_indexes = [
    # 商品名称索引（用于搜索）
    Index('idx_product_name', 'name'),

    # 商品SKU唯一索引（已通过unique=True创建）
    # Index('idx_product_sku', 'sku', unique=True),

    # 分类ID索引（用于按分类查询）
    Index('idx_product_category_id', 'category_id'),

    # 价格索引（用于价格区间查询）
    Index('idx_product_price', 'price'),

    # 库存索引（用于库存查询）
    Index('idx_product_stock', 'stock'),

    # 销量索引（用于热销商品查询）
    Index('idx_product_sales', 'sales'),

    # 复合索引：分类+状态+价格（用于商品列表筛选）
    Index('idx_product_category_active_price', 'category_id', 'is_active', 'price'),

    # 复合索引：状态+推荐标志（用于首页推荐）
    Index('idx_product_active_featured', 'is_active', 'is_featured'),

    # 时间索引（用于新品查询）
    Index('idx_product_created_at', 'created_at'),
]

# ProductCategory表索引
category_indexes = [
    # 分类名称索引（用于搜索）
    Index('idx_category_name', 'name'),

    # 父分类ID索引（用于层级查询）
    Index('idx_category_parent_id', 'parent_id'),

    # 状态索引（用于激活分类查询）
    Index('idx_category_is_active', 'is_active'),

    # 排序索引（用于分类排序）
    Index('idx_category_sort_order', 'sort_order'),
]

# ProductDetail表索引
detail_indexes = [
    # 商品ID索引（已通过外键创建）
    # Index('idx_detail_product_id', 'product_id'),

    # 状态索引
    Index('idx_detail_is_active', 'is_active'),

    # SEO标题索引
    Index('idx_detail_meta_title', 'meta_title'),
]

# ProductImage表索引
image_indexes = [
    # 商品ID索引（已通过外键创建）
    # Index('idx_image_product_id', 'product_id'),

    # 主图索引（用于快速查找主图）
    Index('idx_image_is_main', 'is_main'),

    # 商品ID+主图复合索引（用于查找商品主图）
    Index('idx_image_product_main', 'product_id', 'is_main'),

    # 排序索引
    Index('idx_image_sort_order', 'sort_order'),
]

# ProductSpecification表索引
spec_indexes = [
    # 商品ID索引（已通过外键创建）
    # Index('idx_spec_product_id', 'product_id'),

    # 规格名称索引
    Index('idx_spec_name', 'spec_name'),

    # 规分组索引
    Index('idx_spec_group', 'spec_group'),

    # 状态索引
    Index('idx_spec_is_active', 'is_active'),

    # 商品ID+状态复合索引（用于查找商品的有效规格）
    Index('idx_spec_product_active', 'product_id', 'is_active'),
]

# ProductAttribute表索引
attribute_indexes = [
    # 商品ID索引（已通过外键创建）
    # Index('idx_attr_product_id', 'product_id'),

    # 属性类型索引
    Index('idx_attr_type', 'attr_type'),

    # 属性值索引
    Index('idx_attr_value', 'attr_value'),

    # 状态索引
    Index('idx_attr_is_active', 'is_active'),

    # 默认选项索引
    Index('idx_attr_is_default', 'is_default'),

    # 商品ID+类型+状态复合索引（用于查找商品的某类型属性）
    Index('idx_attr_product_type_active', 'product_id', 'attr_type', 'is_active'),
]

# ProductWarranty表索引
warranty_indexes = [
    # 商品ID索引（已通过外键创建）
    # Index('idx_warranty_product_id', 'product_id'),

    # 保修类型索引
    Index('idx_warranty_type', 'warranty_type'),

    # 状态索引
    Index('idx_warranty_is_active', 'is_active'),
]

# ProductService表索引
service_indexes = [
    # 商品ID索引（已通过外键创建）
    # Index('idx_service_product_id', 'product_id'),

    # 服务类型索引
    Index('idx_service_type', 'service_type'),

    # 状态索引
    Index('idx_service_is_active', 'is_active'),
]

# ProductShipping表索引
shipping_indexes = [
    # 商品ID索引（已通过外键创建）
    # Index('idx_shipping_product_id', 'product_id'),

    # 运费索引（用于免运费查询）
    Index('idx_shipping_fee', 'shipping_fee'),

    # 包邮门槛索引
    Index('idx_shipping_free_limit', 'free_shipping_limit'),
]

# 所有索引的集合
all_indexes = (
    product_indexes +
    category_indexes +
    detail_indexes +
    image_indexes +
    spec_indexes +
    attribute_indexes +
    warranty_indexes +
    service_indexes +
    shipping_indexes
)